# 根据数据制作全国疫情地图

# 导入地图功能
from pyecharts.charts import Map
# 导入可视化地图选项,工具箱
from pyecharts.options import VisualMapOpts, ToolboxOpts
# 导入json模块
import json
# 导入自定义模块, 修改省市名 功能函数
from 一阶段_第十章_数据可视化.一阶段_第十章_数据准备.相关数据_处理函数集 import 修改省市名


# 读取文件成本获取数据
疫情文件 = open("/资料数据/疫情.txt", 'r', encoding='UTF-8')
# 获取全部数据
数据 = 疫情文件.read()
疫情文件.close()
# print(数据)

# 我们数据是json格式的,要转换成python格式的数据 (字典类型)
数据 = json.loads(数据)

# 我们不需要全部的数据,我们最终只需要现在全国累计确诊总人数  所以我们要对数据进一步截取

# 初步截取  到记录各省市地方
数据 = 数据['areaTree'][0]['children']  # 取到列表方便下面循环
# print(数据)

# 现在取每一个省份的数据
绘图数据 = []

for 每省份 in 数据:
    省名 = 每省份['name']
    省名 = 修改省市名(省名)
    print(type(省名), 省名)
    省确诊总人数 = 每省份['total']['confirm']
    绘图数据.append((省名, 省确诊总人数))

# print(绘图数据)

# 生成地图
地图 = Map()
地图.add("全国各省疫情累计确诊人数", 绘图数据, 'china')

# 全局设置
地图.set_global_opts(
                   # 工具箱选项 这里是显示
                   toolbox_opts=ToolboxOpts(is_show=True),
                   # 开启地图颜色显示,并且分段数据不同颜色
                   visualmap_opts=VisualMapOpts(is_show=True,       # 是否显示
                                                is_piecewise=True,  # 是否分段
                                                # 分段显示标题 和 颜色
                                                pieces=[
                                                        {"min": 1,       "max": 100,     "label": "1-100人",    "color": "#ffff00"},
                                                        {"min": 101,     "max": 1000,    "label": "101-1000人",  "color": "#ffcc00"},
                                                        {"min": 1001,    "max": 5000,    "label": "1001-5000人",  "color": "#ff9900"},
                                                        {"min": 5001,    "max": 10000,   "label": "5001-10000人", "color": "#ff6600"},
                                                        {"min": 10001,   "max": 10_0000, "label": "10001-100000人", "color": "#ff3300"},
                                                        {"min": 10_0001, "max": 50_0000, "label": "10_0001-500000人", "color": "#ff0000"},
                                                                                        ]
                                                )
                    )

地图.render("全国疫情.html")
